/*
 * NotaDespesa.java
 *
 * Created on October 7, 2007, 10:50 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package petstore.model;

import petstore.model.enumeration.SituacaoNotaDespesa;
import java.util.Collection;
import java.util.Date;
import javax.persistence.AttributeOverride;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;

/**
 * Entity class NotaDespesa
 * 
 * @author Tom Hayden
 */
@Entity
@Table(name = "nota_despesa")
@AttributeOverride(name="id", column=@Column(name="cdnotadespesa"))
public class NotaDespesa extends BusinessObject {

    @Column(name = "dtemissaond")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dataEmissao;

    @Column(name = "stnotadespesa")
    @Enumerated(EnumType.ORDINAL)
    private SituacaoNotaDespesa situacao;

    @Version
    private Integer versao;

    @Column(name = "ativo")
    private boolean active;

    @ManyToOne
    @JoinColumn(name="cdatendimento")
    private Atendimento atendimento;

    @ManyToOne
    @JoinColumn(name="cdconducao")
    private Conducao conducao;

    @ManyToOne
    @JoinColumn(name="cdhospedagem")
    private Hospedagem hospedagem;

    @OneToMany(cascade = CascadeType.ALL)
    private Collection<ItemProdutoND> itensProduto;

    @OneToMany(cascade = CascadeType.ALL)
    private Collection<ItemServicoND> itensServico;
    
    /** Creates a new instance of NotaDespesa */
    public NotaDespesa() {
    }

    public Date getDataEmissao() {
        return dataEmissao;
    }

    public void setDataEmissao(Date dataEmissao) {
        this.dataEmissao = dataEmissao;
    }

    public SituacaoNotaDespesa getSituacao() {
        return situacao;
    }

    public void setSituacao(SituacaoNotaDespesa situacao) {
        this.situacao = situacao;
    }

    public Integer getVersao() {
        return versao;
    }

    public void setVersao(Integer versao) {
        this.versao = versao;
    }

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    public Atendimento getAtendimento() {
        return atendimento;
    }

    public void setAtendimento(Atendimento atendimento) {
        this.atendimento = atendimento;
    }

    public Conducao getConducao() {
        return conducao;
    }

    public void setConducao(Conducao conducao) {
        this.conducao = conducao;
    }

    public Hospedagem getHospedagem() {
        return hospedagem;
    }

    public void setHospedagem(Hospedagem hospedagem) {
        this.hospedagem = hospedagem;
    }

    public Collection<ItemProdutoND> getItensProduto() {
        return itensProduto;
    }

    public void setItensProduto(Collection<ItemProdutoND> itensProduto) {
        this.itensProduto = itensProduto;
    }

    public Collection<ItemServicoND> getItensServico() {
        return itensServico;
    }

    public void setItensServico(Collection<ItemServicoND> itensServico) {
        this.itensServico = itensServico;
    }
    
}
